/*
给定一个正整数 n，请你求出 1∼n 中质数的个数。

输入格式
共一行，包含整数 n。

输出格式
共一行，包含一个整数，表示 1∼n 中质数的个数。

数据范围
1≤n≤106
输入样例：
8
输出样例：
4

*/
#include <iostream>

using namespace std;
const int N = 1e6 + 10;
int primes[N], cnt = 0;
bool st[N];

int get_prime(int n)
{
    // 线性筛法
    for (int i = 2; i < n; i++)
    {
        if (!st[i])
            primes[cnt++] = i;
        for (int j = 0; primes[j] <= n / i; j++)
        {
            st[i * primes[j]] = true;
            if (i % primes[j] == 0)
                break;
        }
    }
    return cnt;
}

int main(int argc, char const *argv[])
{
    int n;
    cin >> n;
    cout << get_prime(n) << endl;
    return 0;
}
